package estructuras;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Clase de nodo para la implementación de listas.
 * Basado parcialmente en la estructura definida por Duane Bailey en el libro Java Structures.
 * @author asus
 */
public class Node<E> {
    
    /**
     * Datos del nodo
     */
    protected E data;
    
    /**
     * Referencia al siguiente nodo
     */
    protected Node<E> next;
    
    /**
     * Constructor de la clase
     * @param v datos del nodo
     * @param n referencia al siguiente nodo
     */
    public Node(E v, Node<E> n) {
        data = v;
        next = n;
    }
    
    /**
     * Constructor de la clase, sin referencia a siguiente nodo
     * @param v datos del nodo
     */
    public Node(E v) {
        this (v, null);
    }
    
    /**
     * Devuelve la referencia al siguiente nodo
     * @return referencia al siguiente nodo
     */
    public Node<E> nextElement() {
        return next;
    }
    
    /**
     * Devuelve los datos que contiene el nodo
     * @return datos del nodo
     */
    public E value() {
        return data;
    }
    
    /**
     * Actualiza la referencia al siguiente nodo, con la referencia ingresada por el usuario
     * @param n nueva referencia hacia el siguiente nodo
     * Post: La referencia hacia el siguiente nodo es la ingresada como parámetro.
     */
    public void setNextElement(Node<E> n) {
        next = n;
    }
    
    /**
     * Actualiza los datos del nodo
     * @param v Nuevos datos que contendrá el nodo
     * Post: El nodo contiene los datos ingresados como parámetro.
     */
    public void setValue(E v) {
        data = v;
    }
            
     
}
